# 5. __new__ 和 __init__ 的区别
# 特性	__new__	__init__
# 调用时机	在实例创建时调用，先于 __init__	在实例创建后调用，用于初始化对象
# 返回值	必须返回一个实例对象	无返回值（None）
# 用途	控制实例创建过程	初始化实例属性
# 参数	cls（类）	self（实例）
class MySingleton:
    def __init__(self):
        pass

    def __new__(cls, *args, **kwargs):
        pass


mysingleton1 = MySingleton()
mysingleton2 = MySingleton()
print(mysingleton1)   # None
print(mysingleton2)   # None
print(id(mysingleton1))
print(id(mysingleton2))
print(mysingleton1 == mysingleton2) # true

